import scala.util.matching.Regex
// 演示 - 正则表达式

// 回顾 - str.matches
val str = "Abc123"
str.matches("^A.*\\d+$")

// 1 - 用String类的r方法，构建一个Regex对象
val numPattern = "[0-9]+".r
val srcString = "Abc!@#456QWE789()_"

// 2 - findAllIn
// Regex对象的findAllIn方法，返回一个迭代器，用于遍历所有匹配元素
for (each <- numPattern.findAllIn(srcString)) {
  println(each)
}

// 2.2 将迭代器转发为数组
numPattern.findAllIn(srcString).toArray

// 3 - findFirtIn 找打字符串中首个匹配项
numPattern.findFirstIn(srcString)

// 4 - replaceFirstIn 将第一个匹配项替换指定的内容
numPattern.replaceFirstIn(srcString,"88")

// 5 - replaceSomeIn
numPattern.replaceSomeIn(srcString, m => if (m.matched.toInt %2 == 0) Some("999") else None)

// 6 -
val patten = new Regex("(S|s)cala")
val str2 = "Scala id scalable and cool"
patten.findAllIn(str2).mkString(",")

val b = Array("a", "b")
b.mkString(",")

// 7 - 正则表达式组
val numIntemPattern = "([0-9]+) ([a-z]+)".r
val src2 = "10 cpus, 20 cpus"
for (m <- numIntemPattern.findAllMatchIn(src2)) {
  println(m.group(1) + " / " + m.group(2))
}






